#1)  A = {1, 2, 3, 4, 5}     B = {4, 5, 6, 7, 8}
    #  获取两个集合的交集，
    #  并集
    #  获取A中有，但是B 中没有的
    # 检查A是否是B的子集
    #  每个小题定义一个函数并且调用
# 定义两个集合
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# 交集：同时存在于A和B中的元素
def jiao(a, b):
    # 创建空集合存储交集结果
    jiao_ab = set()
    # 遍历集合a中的每个元素
    for i in a:
        # 检查元素是否也存在于集合b中
        if i in b:
            # 如果存在，添加到交集集合中
            jiao_ab.add(i)
    return jiao_ab
jiao = jiao(A, B)
print(f"1. 交集（A和B共有的元素）: {jiao}")  # 结果：{4, 5}
# 2. 手动实现并集操作
# 并集：包含A和B中所有不重复的元素
def bing(a, b):
    # 创建空集合存储并集结果
    union = set()
    # 先添加集合a中的所有元素
    for i in a:
        union.add(i)
    # 再添加集合b中的所有元素（集合特性会自动去重）
    for i in b:
        union.add(i)
    return union
 # 计算并打印并集
union = bing(A, B)
print(f"2. 并集（A和B所有的元素）: {union}")
# 3. 手动实现差集操作（A中有但B中没有的元素）
def C1(a, b):
    # 创建空集合存储结果
    F = set()
    # 遍历集合a中的每个元素
    for i in a:
        # 检查元素是否不存在于集合b中
        if i not in b:
            # 如果不存在，添加到结果集合中
            F.add(i)
    return F
# 计算并打印A中有B中没有的元素
C2 = C1(A, B)
print(f"3. A中有但B中没有的元素: {C2}")
# 4. 手动检查A是否是B的子集
# 子集：A中的所有元素都必须存在于B中
def D1(a, b):
    # 遍历集合a中的每个元素
    for i in a:
        # 如果发现a中有元素不在b中，直接返回False
        if i not in b:
            return False
    # 所有元素都在b中，返回True
    return True
# 检查并打印A是否是B的子集
D = D1(A, B)
print(f"4. A是B的子集吗?: {D}")

print('-'*50)

#2）从列表中找出只出现一次的元素
#获取用户输入的字符串，并将输入的内容赋值给变量
a = input("请输入：")
#将字符串a转换为列表，列表中的每个元素是字符串中的一个字符
a = list(a)
# 定义一个名为find的函数，参数为列表a
def find(a):
    # 创建一个空列表，用于存储只出现一次的字符
    only=[]
    # 遍历列表a中的每个元素i
    for i in a:
        # 计算元素i在列表a中出现的次数
        b=a.count(i)
        # 如果该元素只出现一次（次数为1）
        if b==1:
            # 将该元素添加到only列表中
            only.append(i)
    # 打印只出现一次的字符列表
    print(only)
# 调用find函数，传入列表a作为参数
find(a)

print('-'*50)

#3）找出一个列表中只出现一次的元素 不通过count()方法查找
#获取用户输入的字符串，并将输入的内容赋值给变量
a = input("请输入：")
#将字符串a转换为列表，列表中的每个元素是字符串中的一个字符
a = list(a)
#定义一个名为find的函数，参数为a
def find(a):
    #创建一个空字典，用来存储每个元素出现的次数
    count_dict = {}
    # 遍历列表a中的每个元素i
    for i in a:
        #检查元素i是否已经存在字典count_dict中
        if i in count_dict:
            #如果存在，将该元素的计数1
            count_dict[i] += 1
        else:
            # 如果不存在，将该元素添加到字典中，并设置计数为1
            count_dict[i] = 1
    # 使用列表推导式，从字典中筛选出所有值为1的键（即只出现一次的元素）
    # key for key, value in count_dict.items() 表示遍历字典中的键值对
    # if value == 1 表示只保留那些出现次数为1的元素
    only = [key for key, value in count_dict.items() if value == 1]
    # 打印只出现一次的元素列表
    print(only)
# 调用find函数，传入列表a作为参数
find(a)

